/**
 * @Author: lianghuan
 * @Description: example
 * @emoji - ( ゜- ゜)つロ 乾杯~
 * @email lianghuanA@outlook.com
 * @Date: 2021-10-13 15:18
 * @Version: 1.0.0
 */

package main

import (
	"fmt"
	converter "go-table2struct"
)

func main() {
	// 初始化
	t2t := converter.NewTable2Struct()
	// 个性化配置
	t2t.Config(&converter.T2tConfig{
		// 如果字段首字母本来就是大写, 就不添加tag, 默认false添加, true不添加
		RmTagIfUcFirsted: false,
		// tag的字段名字是否转换为小写, 如果本身有大写字母的话, 默认false不转
		TagToLower: false,
		// 字段首字母大写的同时, 是否要把其他字母转换为小写,默认false不转换
		UcFirstOnly: false,
		//json tag是否转为驼峰，默认为false，不转换
		JsonTagToHump: true,
		//结构体名称是否转为驼峰式，默认为false
		StructNameToHump: true,
	})

	tabs := [...]string{"sys_user", "sys_user_a"}
	for _, value := range tabs {
		// 开始迁移转换
		err := t2t.
			// 指定某个表,如果不指定,则默认全部表都迁移
			Table(value).
			// 表前缀
			//Prefix("prefix_").
			// 是否添加json tag
			EnableJsonTag(true).
			// 生成struct的包名(默认为空的话, 则取名为: package model)
			//PackageName("model").
			// tag字段的key值,默认是orm
			TagKey("gorm").
			// 是否添加结构体方法获取表名
			RealNameMethod("TableName").
			// 生成的结构体保存路径
			SavePath("./model/" + value + ".go").
			// 数据库dsn,这里可以使用 t2t.DB() 代替,参数为 *sql.DB 对象
			Dsn("11:1234qwer@tcp(127.0.0.1:3306)/go-cloud?charset=utf8").
			// 执行
			Run()

		fmt.Println(err)
	}

}
